一 . 概述

层次聚类是一种聚类分析方法,旨在构建聚类的层次结构。
对于层次聚类策略一般分为两种类型:

  1. 自下而上:

每个观测值都从其自己的聚类开始,随着层次结构的上升,聚类对合并在一起。

  1. 自上而下:

所有观测都从一个群集开始,并且随着层次向下移动,拆分将递归执行。

二 . 算法分类

1. SingleLinkage

取两个类中最近的两个样本之间的距离作为两个集合的距离,即:最近的两个样本之间的距离越小,

2. CompleteLinkage

取两个集合距离最远的两个点的距离作为两个集合的距离,其效果也刚好相反,限制非常大。

3. AverageLinkage

两个集合中的点两两距离全部放在一起求平均值,相应的能得到一点合适的结果。

三 . 优缺点

1. 优点

  1. 层次表达的结构信息丰富
  2. 数据容易可视化

2. 缺点

  1. 对噪音和离群值很敏感
  2. 计算量很大

四 . sklearn 示例

1
2
3
4
5
6
7
8
9
10
11
from sklearn import datasets, cluster
from scipy.cluster.hierarchy import dendrogram, ward, single
import matplotlib.pyplot as plt

x = datasets.load_iris().data[:10]
clust = cluster.AgglomerativeClustering(n_clusters=2, linkage='ward') # ward = 离平方差
labels = clust.fit_predict(x)

linkage_matrix = ward(x)
dendrogram(linkage_matrix)
plt.show()